<?php
header('Content-Type: application/json');

// DEBUG: Agregar esto para ver qué datos llegan
$debug = [
    'POST_completo' => $_POST,
    'GET_completo' => $_GET,
    'fecha_inicio_recibida' => isset($_POST['fecha_inicio']) ? $_POST['fecha_inicio'] : 'NO_EXISTE',
    'fecha_fin_recibida' => isset($_POST['fecha_fin']) ? $_POST['fecha_fin'] : 'NO_EXISTE'
];

// Escribir el debug a un archivo para verlo
file_put_contents('debug_datos_fechas.txt', json_encode($debug, JSON_PRETTY_PRINT) . "\n\n", FILE_APPEND);

// Conexión a la base de datos
$host = "localhost";
$dbname = "u574302726_temperatura";
$user = "u574302726_Erik";
$pass = "Isa280681";

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo json_encode(["error" => $e->getMessage()]);
    exit;
}

// Parámetros de filtrado (pueden venir por POST o GET)
$limite = isset($_POST['limite']) ? intval($_POST['limite']) : (isset($_GET['limite']) ? intval($_GET['limite']) : 500);
$fechaInicio = isset($_POST['fecha_inicio']) ? $_POST['fecha_inicio'] : (isset($_GET['fecha_inicio']) ? $_GET['fecha_inicio'] : '');
$fechaFin = isset($_POST['fecha_fin']) ? $_POST['fecha_fin'] : (isset($_GET['fecha_fin']) ? $_GET['fecha_fin'] : '');

// DEBUG: Parámetros procesados
$debug2 = [
    'limite' => $limite,
    'fechas_antes_conversion' => [
        'inicio' => $fechaInicio,
        'fin' => $fechaFin,
        'inicio_vacio' => empty($fechaInicio),
        'fin_vacio' => empty($fechaFin)
    ]
];
file_put_contents('debug_datos_fechas.txt', "PARÁMETROS PROCESADOS: " . json_encode($debug2, JSON_PRETTY_PRINT) . "\n", FILE_APPEND);

// Convertir formato de fechas (dd/mm/yyyy → yyyy-mm-dd) si vienen
$fechaInicioConvertida = '';
$fechaFinConvertida = '';

if (!empty($fechaInicio) && !empty($fechaFin)) {
    // Intentar conversión con diferentes formatos
    $fechaInicioObj = DateTime::createFromFormat('d/m/Y', $fechaInicio);
    $fechaFinObj = DateTime::createFromFormat('d/m/Y', $fechaFin);
    
    // Si falla con d/m/Y, intentar con j/n/Y (sin ceros iniciales)
    if (!$fechaInicioObj) {
        $fechaInicioObj = DateTime::createFromFormat('j/n/Y', $fechaInicio);
    }
    if (!$fechaFinObj) {
        $fechaFinObj = DateTime::createFromFormat('j/n/Y', $fechaFin);
    }
    
    // Si aún falla, intentar formato Y-m-d (por si ya viene en formato correcto)
    if (!$fechaInicioObj) {
        $fechaInicioObj = DateTime::createFromFormat('Y-m-d', $fechaInicio);
    }
    if (!$fechaFinObj) {
        $fechaFinObj = DateTime::createFromFormat('Y-m-d', $fechaFin);
    }
    
    if ($fechaInicioObj && $fechaFinObj) {
        $fechaInicioConvertida = $fechaInicioObj->format('Y-m-d');
        $fechaFinConvertida = $fechaFinObj->format('Y-m-d');
        
        // DEBUG: Fechas después de conversión
        file_put_contents('debug_datos_fechas.txt', "CONVERSIÓN EXITOSA - Inicio: $fechaInicioConvertida, Fin: $fechaFinConvertida\n", FILE_APPEND);
    } else {
        // DEBUG: Error en conversión
        $errores = [];
        if (!$fechaInicioObj) $errores[] = "Error convirtiendo fecha inicio: $fechaInicio";
        if (!$fechaFinObj) $errores[] = "Error convirtiendo fecha fin: $fechaFin";
        
        file_put_contents('debug_datos_fechas.txt', "ERROR EN CONVERSIÓN: " . implode(", ", $errores) . "\n", FILE_APPEND);
    }
}

// Construcción del WHERE dinámico
$where = "WHERE 1";
$parametros = [];

// Si hay filtro de fechas, agregarlo
if (!empty($fechaInicioConvertida) && !empty($fechaFinConvertida)) {
    $where .= " AND (fecha >= :fechaInicio AND fecha <= :fechaFin)";
    $parametros['fechaInicio'] = $fechaInicioConvertida;
    $parametros['fechaFin'] = $fechaFinConvertida;
    
    // DEBUG: Info del filtro aplicado
    file_put_contents('debug_datos_fechas.txt', "WHERE con fechas: $where\n", FILE_APPEND);
    file_put_contents('debug_datos_fechas.txt', "Parámetros: " . json_encode($parametros) . "\n", FILE_APPEND);
    
    // Consulta de prueba para verificar datos en el rango
    $testQuery = "SELECT MIN(fecha) as fecha_min, MAX(fecha) as fecha_max, COUNT(*) as total FROM registros_tempreatura WHERE fecha >= '$fechaInicioConvertida' AND fecha <= '$fechaFinConvertida'";
    $testResult = $pdo->query($testQuery)->fetch(PDO::FETCH_ASSOC);
    file_put_contents('debug_datos_fechas.txt', "Datos en rango filtrado: " . json_encode($testResult) . "\n", FILE_APPEND);
}

// Consulta principal
$sql = "SELECT fecha, hora, temperatura, id_registro 
        FROM registros_tempreatura 
        $where 
        ORDER BY id_registro DESC 
        LIMIT :limite";

file_put_contents('debug_datos_fechas.txt', "SQL final: $sql\n", FILE_APPEND);

$stmt = $pdo->prepare($sql);
$stmt->bindParam(':limite', $limite, PDO::PARAM_INT);

// Bind parámetros de fechas si existen
foreach ($parametros as $key => $value) {
    $stmt->bindParam(":$key", $parametros[$key], PDO::PARAM_STR);
}

$stmt->execute();

// Procesar datos para Highcharts
$datos = [];
$contador = 0;
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $fechaHora = $row['fecha'] . ' ' . $row['hora'];
    $datos[] = [
        'x' => strtotime($fechaHora) * 1000,  // milisegundos para Highcharts
        'y' => floatval($row['temperatura']),
        'fecha_original' => $row['fecha'],     // Info adicional para debug
        'hora_original' => $row['hora'],
        'id' => $row['id_registro']
    ];
    $contador++;
}

// DEBUG: Resultados finales
file_put_contents('debug_datos_fechas.txt', "Total registros procesados: $contador\n", FILE_APPEND);
if ($contador > 0) {
    file_put_contents('debug_datos_fechas.txt', "Primer registro: " . json_encode($datos[0]) . "\n", FILE_APPEND);
    file_put_contents('debug_datos_fechas.txt', "Último registro: " . json_encode($datos[$contador-1]) . "\n", FILE_APPEND);
}

// También obtener estadísticas generales
$statsQuery = "SELECT MIN(fecha) as fecha_minima, MAX(fecha) as fecha_maxima, COUNT(*) as total_general FROM registros_tempreatura";
$statsResult = $pdo->query($statsQuery)->fetch(PDO::FETCH_ASSOC);
file_put_contents('debug_datos_fechas.txt', "Estadísticas generales BD: " . json_encode($statsResult) . "\n", FILE_APPEND);
file_put_contents('debug_datos_fechas.txt', "------- FIN DEBUG DATOS -------\n\n", FILE_APPEND);

// Respuesta para Highcharts (mantiene formato original pero con info adicional)
$response = [
    'data' => $datos,
    'total_registros' => $contador,
    'filtros_aplicados' => [
        'fecha_inicio' => $fechaInicioConvertida,
        'fecha_fin' => $fechaFinConvertida,
        'limite' => $limite
    ]
];

echo json_encode($response);
?>